package 剑指offer;

import java.util.Scanner;

public class 正整数分解质因数 {
    /*
     * 【程序4】   
        题目：将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。   
        程序分析：对n进行分解质因数，应先找到一个最小的质数k，然后按下述步骤完成：   
        (1)如果这个质数恰等于n，则说明分解质因数的过程已经结束，打印出即可。   
        (2)如果n <> k，但n能被k整除，则应打印出k的值，并用n除以k的商,作为新的正整数你n,重复执行第一步。   
        (3)如果n不能被k整除，则用k+1作为k的值,重复执行第一步。  
     */
    public static String fenjie(int n) {
		/*String num="";
		int i=2;
		while(i!=n)
		{
			if(n%i==0)
			{
				int tmp=n/i;
				n=tmp;
				num+=i+"*";
			}
			else
			{
				i++;
			}
			
		}
		return num+i;*/
        String num = "";
		/*while(n!=1) {
		for(int i=2;i<=n;i++)
		{
			if(n%i==0) {
				n=n/i;
				num+=i+"*";
				break;
				
			}
			else
			{
				continue;
			}
		}
		}*/
        if (n == 1) {
            return n + "";
        }
        int tmp = n;
        for (int i = 2; i < n + 1; i++) {
            if (tmp % i == 0) {
                num += i + "*";
                tmp = tmp / i;
                if (tmp == 1) {
                    break;
                }
                i = 1;
            }
        }
        num = num.substring(0, num.length() - 1);
        return num;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner ss = new Scanner(System.in);
        System.out.print("请输入n: ");
        int n = ss.nextInt();
        System.out.println("n的分解质因数数列为: " + fenjie(n));

    }

}
